Goで体感するMultipath TCP ― Go 1.24 時代の MPTCP Listener を理解する
アプリ側は従来の TCP を扱うように、低レイヤの複数の [TCP コネクション(subflow)を束ねる仕組みを持っている 複数の Network Interface を持つクライアントのコネクションを束ねて通信の帯域を拡張し、冗長性 を高めることができる メリット
帯域幅の集約
最適経路選択
1 つ目は MP_CAPABLE という TCP Option を加えて実施し、subflow を作る
2 つ目以降は MP_JOIN を使って、既存の subflow が存在しているセッションに紐付け
ADD_ADDR を使って、subflow を作ることができるアドレスを通知できる
v1.21 にサポートされた(明示的な有効化が必要)
v.1.24 に OS が対応していれば自動的に MPTCP の Listen になった クライアントサイドは特に何も変わらない
TCP で Dial する場合は TCP コネクション、明示的に MPTCP を有効化した場合には MPTCP 接続が可能 そのため、既存のコード修正は基本的には一切不要
ただし、MPTCP は主要な Socket Option を満たしているが、一部足りていない機能も存在しているため、注意が必要なケースも その場合、ListenConfig.SetMultipathTCP(false) または GODEBUG=multipathtcp=0 で無効化すれば OK